package com.gxc.tree;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 * 输入一行为数组的内容，数组的每个元素都是正整数，元素间用空格分隔。
 *
 * 注意第一个元素即为根节点的值，即数组的第N个元素对应下标N，下标0在树的表示中没有使用，所以我们省略了。
 *
 * 输入的树最多为7层。
 *
 * 输出描述
 * 输出从根节点到最小叶子节点的路径上，各个节点的值，由空格分隔，用例保证最小叶子节点只有一个。
 */
public class MinimumLeafNode {

    public static void main(String[] args) {
        System.out.println(-1 / 2);
        Scanner scanner = new Scanner(System.in);
        int[] array = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

        int min = Integer.MAX_VALUE;
        int posion = -1;
        for (int i = 1; i < array.length; i++) {
            if (array[i] == -1) continue;
            if (array[i] < min) {
                posion = i;
                min = array[i];
            }
        }
        List<Integer> res = new ArrayList<>();
        while (posion>0) {
            res.add(posion);
            posion = (posion - 1) / 2;
        }
        res.add(0);

        for (int i = res.size() - 1; i >= 0; i--) {
            System.out.print(array[res.get(i)]);
            if (i != 0) System.out.print(" ");
        }
    }
}
